package companypay

import (
    "fmt"
	"crypto/tls"
	"wxsdk/wxpay/core"
	. "wxsdk/wxpay"
)

//查询企业付款
type QueryBankReq struct {
	MchId          string   `xml:"mch_id"`            //商户号
	ParnetTradeNo  string   `xml:"partner_trade_no"`  //商户企业付款单号
	NonceStr       string   `xml:"nonce_str"`         //随机字符串
	Sign           string   `xml:"sign"`              //签名
}

type QueryBankResponse struct {
	BaseResponse          `xml:",innerXml,omitempty"`
	PartnerTradeNo string `xml:"partner_trade_no"`         // 商户企业付款单号
	PaymentNo      string `xml:"payment_no"`               // 微信企业付款单号
	BankNoMd5      string `xml:"bank_no_md5"`              // 银行卡号
	TrueNameMd5    string `xml:"true_name_md5"`            // 用户真实姓名
	Amount         int    `xml:"amount"`                   // 代付金额
	Status         string `xml:"status"`                   // 代付单状态
	CmmsAmt        int    `xml:"cmms_amt"`                 // 手续费金额
	CreateTime     string `xml:"create_time"`              // 商户下单时间
	PaySuccTime    string `xml:"pay_succ_time,omitempty"`  // 成功付款时间
	Reason         string `xml:"reason,omitempty"`         // 失败原因
}

func QueryBank(mchId,appSecret,orderId,crt,key string) (QueryBankResponse,error){
	var (
	    req = new(QueryBankReq)
	    rsp QueryBankResponse
	)
	cert, err := tls.X509KeyPair([]byte(crt), []byte(key))
	if err != nil {
		return rsp, err
	}
	tlsConfig := &tls.Config{
		Certificates: []tls.Certificate{cert},
	}
	client := core.GetWxCoPayClient(appSecret,tlsConfig)
	//
	req.MchId = mchId              //商户号
	req.ParnetTradeNo = orderId    //商户订单号
	serverUrl := fmt.Sprintf("https://api.mch.weixin.qq.com/mmpaysptrans/query_bank")
	err = client.Excute(serverUrl, req, &rsp, false)
    if err != nil {
		return rsp, err
	}
	return rsp, nil
}

	